import axios from "axios";
import router from "@/router";
import { ElMessage } from 'element-plus'
import { useUserStore } from '@/store/user'
//创建axios实例对象
const request = axios.create({
  baseURL: "/api",
  timeout: 600000,
});
//axios的响应resquest拦截器 -获取localStrage中的token，在请求头中增加token请求头
request.interceptors.request.use(
  (config) => {
    const token = localStorage.getItem("token");
    if (token) {
      config.headers.satoken = token;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);
//axios的响应response拦截器
request.interceptors.response.use(
  (response) => {
    if (response.data.code === 401) {
      //token过期
      const userStore = useUserStore()
      userStore.reset()  // 调用 store 中的 reset 方法清空状态
      //跳转到登录页
      router.push("/")
    }
    return response.data;
  },
  (error) => {
    // 统一处理错误
    if (error.response) {
      const status = error.response.status
      if (status === 500) {
        ElMessage.error("服务器错误，请稍后再试！")
      } else if (status === 401) {
        ElMessage.error("未登录，请先登录")
      } else {
        ElMessage.error(error.response.data.msg || "请求失败")
      }
    } else {
      ElMessage.error("网络连接失败")
    }
    return Promise.reject(error)
  }
);
export default request;